import {defineStore} from "pinia"
import {IDeviceType} from '../until/interface'
import tool from '../until/tool'

// const settingData:Partial<Array<Array<(IDeviceType)>>> = []
// const settingData:Array<Array<IDeviceType>> = [
// [
//     {
//         id: 1,
//         name: "message.uv",
//         normal_low: 100,
//         normal_high: 5000,
//         current_val: 5000,
//     },
//     {
//         id: 2,
//         name: "message.inf",
//         normal_low: -40,
//         normal_high: 150,
//         current_val: 100
//     },
//     {
//         id: 3,
//         name: "message.tem",
//         normal_low: -40,
//         normal_high: 80,
//         current_val: 20
//     },
//     {
//         id: 5,
//         name: "message.hum",
//         normal_low: 0,
//         normal_high: 90,
//         current_val: 45
//     },
//     {
//         id: 6,
//         name: "message.pre",
//         normal_low: 0,
//         normal_high: 200,
//         current_val: 81
//     }
// ]
// ]
let currentRate:number | string = localStorage.getItem("currentRate") || 300
let userInfo = JSON.parse(localStorage.getItem("userInfo")) || null
let isLogin = userInfo? true:false
export const userStore = defineStore({
    id: "user",
    state() {
        return {
            speed: currentRate, // 用户采集数据的速率3秒钟一次
            setting: [],
            initNum: 0,
            total: 0,
            linkCode: "", // 连接码
            currentDate: '', // 当前时间
            isWatch: false, // 是否开启了数据监听
            isLogin, //用户是否登录
            userInfo, // 用户的信息
            deviceList: [], // 设备列表
            websocket: null, // websocket的对象
            isTimer: 0, // 判断定时器是否已经开启了
            localWebsocket: null,  // 本地websocket
            indexDbNum: 0,
            errList: []
        }
    },
    actions: {
        // 修改采样的速率
        changeSpeed(speed:number) {
            this.speed = speed
            localStorage.setItem("currentRate",speed)
        },
        // 修改阈值
        changeValue(option:any) {
            let index = option.id
            this.setting[option.module_id - 1][index].current_val = option.currentValue
        },
        // 计算需要导入的数据量
        computeNum(num:number) {
            this.total = num
        },
        // 初始化用户的信息
        initUser(userInfo:any) {
            this.userInfo = userInfo
            this.isLogin = true
            localStorage.setItem("userInfo",JSON.stringify(userInfo))
            localStorage.setItem("isLogin",JSON.stringify(this.isLogin))
        },
        // 退出用户的登录
        exitUser() {
            this.isLogin = false
            this.userInfo = null
            localStorage.removeItem("userInfo")
            localStorage.removeItem("isLogin")
        },
         // 重置用户的密码
         resetPassword(password:string) {
            this.userInfo.password = password
            localStorage.setItem("userInfo",JSON.stringify(this.userInfo))
        },
        // 重置系统的用户名
        resetUsername(username:string,newToken:string) {
            this.userInfo.username = username
            this.userInfo.token = newToken
            localStorage.setItem("userInfo",JSON.stringify(this.userInfo))
        },
        // 绑定用户邮箱方便用户找回密码
        bindEmail(email:string) {
            this.userInfo.email = email
            localStorage.setItem("userInfo",JSON.stringify(this.userInfo))
        },
        resetEmail() {
            this.userInfo.email = ""
            localStorage.setItem("userInfo",JSON.stringify(this.userInfo))
        }
    },
    getters: {
        getCurrentDate():string {
            return this.currentDate
        }
    }
})
